public void WriteTransformMarker(
int id,
byte[] data,
int dataOffset,
int dataLength
)
public void writeTransformMarker(int id, byte data[], int dataOffset, int dataLength)
public:
void WriteTransformMarker(
int id,
array<byte>^ data,
int dataOffset,
int dataLength
)
def WriteTransformMarker(self,id,data,dataOffset,dataLength):
id
The id of the metadata marker.
data
A byte array containing the data for the metadata marker.
dataOffset
Offset into data into which to begin the read operation.
dataLength
Number of bytes to read from data.
You should use this method to write a certain marker data into the file.
This method can be called only from within the CodecsTransformMarkerCallback passed to the Transform method.
The transform mechanism is as follows:
Note: You can also use WriteTransformMarker to insert your own markers. The marker will be inserted before the current marker. You can call WriteTransformMarker as many times as you wish. Every call to WriteTransformMarker will insert a new marker.
Warning: Incorrect handling of the markers will generate corrupt files! Since some markers contain important information about the image (image width, height, compression method, colorspace, etc), you should use caution when working with markers.
using Leadtools;
using Leadtools.Codecs;
using Leadtools.ImageProcessing;
using Leadtools.ImageProcessing.Color;
using Leadtools.Svg;
public void TransformExample()
{
RasterCodecs codecs = new RasterCodecs();
string srcFileName = Path.Combine(LEAD_VARS.ImagesDir, "Image1.cmp");
string destFileName = Path.Combine(LEAD_VARS.ImagesDir, "Image1_Transform.cmp");
// Load the source image with markers
Debug.WriteLine("Loading the source image with all markers");
codecs.Options.Load.Markers = true;
RasterImage srcImage = codecs.Load(srcFileName);
// Show the markers loaded, if any
Debug.WriteLine("These markers were loaded:");
foreach (RasterMarkerMetadata marker in srcImage.Markers)
{
byte[] data = marker.GetData();
codecs.WriteMarker(srcFileName, 1, marker);
// codecs.WriteMarker(stream, 1, marker);
codecs.WriteTransformMarker(marker.Id, data, 0, 1);
Debug.WriteLine(" {0}, DataSize:{1}", marker.Id, data.Length);
}
codecs.Transform(
srcFileName,
destFileName,
CodecsTransformFlags.Rotate90,
1,
CodecsTransformMarkerCallback);
// Clean up
codecs.Dispose();
}
CodecsTransformMarkerAction CodecsTransformMarkerCallback(int id, RasterNativeBuffer buffer, CodecsTransformFlags transform)
{
Debug.WriteLine("Transforming: id: {0}, Data Length: {1}, transform: {2}", id, buffer.Length, transform);
return CodecsTransformMarkerAction.Default;
}
static class LEAD_VARS
{
public const string ImagesDir = @"C:\LEADTOOLS23\Resources\Images";
}
import java.io.*;
import java.net.*;
import java.nio.file.Paths;
import java.util.*;
import java.time.Instant;
import java.time.Duration;
import org.junit.*;
import org.junit.runner.JUnitCore;
import org.junit.runner.Result;
import org.junit.runner.notification.Failure;
import static org.junit.Assert.*;
import leadtools.*;
import leadtools.codecs.*;
import leadtools.codecs.RasterCodecs.FeedCallbackThunk;
import leadtools.drawing.internal.*;
import leadtools.imageprocessing.*;
import leadtools.imageprocessing.color.ChangeIntensityCommand;
import leadtools.svg.*;
RasterCodecs codecs;
public void transformExample() {
final String LEAD_VARS_IMAGES_DIR = "C:\\LEADTOOLS23\\Resources\\Images";
codecs = new RasterCodecs();
String srcFileName = combine(LEAD_VARS_IMAGES_DIR, "Image1.cmp");
String destFileName = combine(LEAD_VARS_IMAGES_DIR, "Image1_Transform.cmp");
// Load the source image with markers
System.out.println("Loading the source image with all markers");
codecs.getOptions().getLoad().setMarkers(true);
RasterImage srcImage = codecs.load(srcFileName);
// Show the markers loaded, if any
System.out.println("These markers were loaded:");
for (RasterMarkerMetadata marker : srcImage.getMarkers()) {
byte[] data = marker.getData();
ILeadStream srcFileStream = LeadStreamFactory.create(srcFileName);
codecs.writeMarker(srcFileStream, 1, marker);
codecs.transform(srcFileName, destFileName, CodecsTransformFlags.ROTATE_90, 1, CodecsTransformMarkerCallback);
System.out.printf(" %s, DataSize:%s%m", marker.getId(), data.length);
}
// Clean up
codecs.dispose();
}
CodecsTransformMarkerListener CodecsTransformMarkerCallback = new CodecsTransformMarkerListener() {
@Override
public CodecsTransformMarkerAction OnCodecsTransformMarkerCallback(int id, RasterNativeBuffer buffer,
CodecsTransformFlags transform) {
buffer.getData();
codecs.writeTransformMarker(id, buffer.getData(), 1, 1);
System.out.printf("Transforming: id: %s, Data Length: %s, transform: %s%n", id, buffer.getLength(), transform);
return CodecsTransformMarkerAction.DEFAULT;
}
};
Help Collections
Raster .NET | C API | C++ Class Library | HTML5 JavaScript
Document .NET | C API | C++ Class Library | HTML5 JavaScript
Medical .NET | C API | C++ Class Library | HTML5 JavaScript
Medical Web Viewer .NET
Multimedia
Direct Show .NET | C API | Filters
Media Foundation .NET | C API | Transforms
Supported Platforms
.NET, Java, Android, and iOS/macOS Assemblies
Imaging, Medical, and Document
C API/C++ Class Libraries
Imaging, Medical, and Document
HTML5 JavaScript Libraries
Imaging, Medical, and Document